home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 2001-07-29 | 83.5 KB | 2,582 lines
'-> Mattonite by Stefano Regattin 'i> 2 ottobre 1996 'm> 3,8,12,13,14,19,25,27,31 ottobre 1996 'm> 9 novembre 1996 'm> 12 novembre 1997 'm> 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 maggio 2000 'm> 1,4,5,6,7,8,9,11,13,14,23,26,27,28 giugno 2000 'm> 16,17,18,19,23,24 luglio 2000 'm> 5,12,13,14,15,30 agosto 2000 'm> 1,10,11,26 settembre 2000 'm> 12,15,24,25,26,31 ottobre 2000 'm> 2,16,17,21,23 novembre 2000 'm> 3 dicembre 2000 'm> 5,7,8,9,10,11,13,14,17,18,22,25,26,27,28 febbraio 2001 'm> 1 marzo 2001 'm> 15,22,23,26 aprile 2001 'm> 19,20,22,26,27,29 maggio 2001 'm> 1,2,3,4,5,9,10,12,25,28 giugno 2001 'm> 1,2,3,6,7,10,14,15,16,29 luglio 2001 '---------------------------------------- Set Buffer 20 Degree OGGETTI$="MattoniteOggetti.Abk" SUONI$="MattoniteSuoni.Abk" PUNTEGGI$="TopHundredScores" VERO=-1 FALSO=0 ALTEZZAFONT=8 BANCO=65535 IMMAGINIBOING=8 IMMAGINIGUANO=1 IMMAGINIPAPERO=4 IMMAGINIRUBAPALLINA=11 LARGHEZZAPANNELLO=48 MASSIMOBOINGINCAMPO=3 MASSIMOMATTONCINIDARIDISEGNARE=83 MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO=8 MASSIMOPALLINEINCAMPO=5 OGGETTORIGA=0 OGGETTOCENTRODELLABARRA=1 OGGETTOLATIDELLABARRA=OGGETTOCENTRODELLABARRA+1 OGGETTOMATTONCINODIPOTENZIAMENTO=OGGETTOLATIDELLABARRA+1 OGGETTOBOING=OGGETTOMATTONCINODIPOTENZIAMENTO+MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO OGGETTOPAPERO=249 OGGETTOGUANO=250 OGGETTOPAPEROALIENO=251 OGGETTORUBAPALLINA=252 OGGETTOLASER=253 OGGETTORAGGIOLASER=254 OGGETTOPALLINA=OGGETTOPAPERO-MASSIMOPALLINEINCAMPO PRIMAPARTITA=VERO RITARDODELLENTRATAINCAMPODEIBOING=-1000 SEMITONO#=1.05946 SUONICARICATI=VERO VOCE=1 Dim NOMEDELGIOCATORE$(99),LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(99) Dim PUNTEGGIODELGIOCATORE$(99) Dim DELTAXPALLINA#(MASSIMOPALLINEINCAMPO-1) Dim DELTAYPALLINA#(MASSIMOPALLINEINCAMPO-1) Dim VELOCITADELLAPALLINA#(MASSIMOPALLINEINCAMPO-1) Dim XPALLINA#(MASSIMOPALLINEINCAMPO-1),YPALLINA#(MASSIMOPALLINEINCAMPO-1) Dim BOING(MASSIMOBOINGINCAMPO-1),C0LORE(31),DURATADELLARIGA(2) Dim DURATADELRIDISEGNODELMATTONCINO(MASSIMOMATTONCINIDARIDISEGNARE-1) Dim IMMAGINEBOING(IMMAGINIBOING-1),IMMAGINEPAPERO(IMMAGINIPAPERO-1) Dim IMMAGINEPAPEROALIENO(IMMAGINIPAPERO-1) Dim IMMAGINERUBAPALLINA(IMMAGINIRUBAPALLINA-1),INGOMBRODELLABARRA(2) Dim LAPALLINAERIMASTAINCOLLATAALLABARRA(MASSIMOPALLINEINCAMPO-1) Dim LAPALLINAHACOLPITOLABARRA(MASSIMOPALLINEINCAMPO-1) Dim LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(MASSIMOPALLINEINCAMPO-1) Dim MATTONCINO(246),MATTONCINODARIDISEGNARE(MASSIMOMATTONCINIDARIDISEGNARE-1) Dim MATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1) Dim PALLINA(MASSIMOPALLINEINCAMPO-1) Dim VOCE(3),X0ZONA(246),XBOING(MASSIMOBOINGINCAMPO-1) Dim XCOLLA(MASSIMOPALLINEINCAMPO-1) Dim XMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1) Dim Y0ZONA(246),YBOING(MASSIMOBOINGINCAMPO-1),YCOLLA(MASSIMOPALLINEINCAMPO-1) Dim YMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1) Global VERO,FALSO Global CENTOGIOCATORI$,OGGETTI$,PERCORSO$,PERCORSODEILIVELLI$ Global PERCORSODELLAGRAFICA$,PERCORSODELLAMUSICA$,PUNTEGGI$,SUONI$ Global SEMITONO# Global ALTEZZAFONT,BANCO,_BARRABLOCCATA,BOINGINCAMPO,BONUS,C0LLA Global C0LORIDELLOSCHERMOMENOUNO,DISTANZADELMATTONCINOPIUVICINOALPAPERO Global DURATADELLARIGA,GRADIPAPEROALIENO,GUANOINCAMPO,GUANOMOLLATO Global IMMAGINEGUANO,IMMAGINELASER,IMMAGINEPALLINA,IMMAGINEPAPERO Global IMMAGINEPAPEROALIENO,IMMAGINERAGGIOLASER,IMMAGINERUBAPALLINA Global IMMAGINIBOING,IMMAGINIGUANO,IMMAGINIPAPERO,IMMAGINERIGADUE Global IMMAGINERIGATRE,IMMAGINERIGAUNO,IMMAGINIRUBAPALLINA,LARGHEZZAPANNELLO Global LASER,LIVELLO,LUNGHEZZADELLABARRA,LUNGHEZZADELLABARRACAMBIATA Global MASSIMOBOINGINCAMPO,MASSIMOMATTONCINIDARIDISEGNARE Global MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO,MASSIMOPALLINEINCAMPO Global MATTONCINI,MATTONCINIDIPOTENZIAMENTO,MATTONCINIRIMASTI Global MATTONCINODATROVAREPERILPAPERO,MATTONCINOPERILPAPERO,OGGETTOBOING Global OGGETTOCENTRODELLABARRA,OGGETTOGUANO,OGGETTOLASER,OGGETTOLATIDELLABARRA Global OGGETTOMATTONCINODIPOTENZIAMENTO,OGGETTOPALLINA,OGGETTOPAPERO Global OGGETTOPAPEROALIENO,OGGETTORAGGIOLASER,OGGETTORIGA,OGGETTORUBAPALLINA Global PALLINAPRESADALRUBAPALLINA,PALLINASCELTADALRUBAPALLINA,PALLINE Global PALLINEINCAMPO,_PAPEROALIENO,_PAPEROALIENOINCAMPO,_PAPEROINCAMPO Global POSIZIONE,PUNTEGGIO,PUNTEGGIOMASSIMO,RAGGIOLASERRIFLESSO Global RAGGIOLASERSPARATO,RIGA,RIMBALZODELLEPALLINESUIMATTONCINI,RITARDOBOING Global RITARDOPAPERO,RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA Global RITARDODELLENTRATAINCAMPODEIBOING Global RITARDODELLENTRATAINCAMPODELPAPEROALIENO Global RITARDODELLENTRATAINCAMPODELRUBAPALLINA,RUBAPALLINACOLPITO Global SUONICARICATI,TASTO,TASTOGRIGIO,T0GLILARIGA,VOCE,XBARRA,XFINALERIGA Global XGUANO,XLASER,XPANNELLO,XPAPERO,XPAPEROALIENO,XRIGA,XRUBAPALLINA,YBARRA Global YGUANO,YLASER,YPAPERO,YPAPEROALIENO,YRUBAPALLINA Global NOMEDELGIOCATORE$(),LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$() Global PUNTEGGIODELGIOCATORE$() Global DELTAXPALLINA#(),DELTAYPALLINA#(),VELOCITADELLAPALLINA#(),XPALLINA#() Global YPALLINA#() Global BOING(),C0LORE(),DURATADELLARIGA(),DURATADELRIDISEGNODELMATTONCINO() Global IMMAGINEBOING(),IMMAGINEPAPERO(),IMMAGINEPAPEROALIENO() Global IMMAGINERUBAPALLINA(),INGOMBRODELLABARRA() Global LAPALLINAERIMASTAINCOLLATAALLABARRA(),LAPALLINAHACOLPITOLABARRA() Global LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(),MATTONCINO() Global MATTONCINODARIDISEGNARE(),MATTONCINODIPOTENZIAMENTO(),PALLINA(),VOCE() Global X0ZONA(),XBOING(),XCOLLA(),XMATTONCINODIPOTENZIAMENTO(),YBOING() Global YCOLLA(),YMATTONCINODIPOTENZIAMENTO(),Y0ZONA() Proc INDIVIDUALAPOSIZIONEDELPROGRAMMA Proc IMPOSTAIPERCORSIDEIFILE Proc IMPOSTALOSCHERMO Proc CARICAGLIOGGETTI Proc IMPOSTAGLIOGGETTI Proc IMPOSTAICOLORI Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1] Proc TROVAILFONTDATA70 Proc DISSOLVENZADEICOLORI[$FFF,1,1] Hide Proc IMPOSTALARCOBALENO If SUONICARICATI=VERO Then Proc CARICAISUONI Proc CARICAILLIVELLO Proc DABANCOAVARIABILI Proc METTIILPANNELLO Proc CREALEIMMAGINIPERLERIGHE Proc IMPOSTALEZONEDEIMATTONCINI Proc METTIECONTAIMATTONCINI Proc IMPOSTALINGOMBRODELLABARRA Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI Proc IMPOSTALADURATADELLERIGHE Proc DISSOLVENZADEICOLORI[$FFF,1,2] Proc IMPOSTAILAMPEGGI Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1] Repeat Proc MOSTRAICREDITI Proc MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI TESTOINTRODUTTIVO$="Press left mouse button to play."+Chr$(10) TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"Press right mouse button to exit." Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINTRODUTTIVO$,20,21,1,500] If TASTO=-1 Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1] C0LLA=FALSO DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000 DURATADELLARIGA=-1 INIZIODELLIVELLO=VERO LASER=0 LIVELLO=0 LUNGHEZZADELLABARRA=1 LUNGHEZZADELLABARRACAMBIATA=LUNGHEZZADELLABARRA PALLINASCELTATADALRUBAPALLINA=MASSIMOPALLINEINCAMPO PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO PALLINE=5 PALLINEINCAMPO=1 _PAPEROINCAMPO=FALSO PUNTEGGIO=0 RIGA=0 RIMBALZODELLEPALLINESUIMATTONCINI=VERO XBARRA=X Screen(X Mouse) YBARRA=247 If PRIMAPARTITA=FALSO or LIVELLO>0 Proc CANCELLAIMATTONCINI Proc CARICAILLIVELLO Proc DABANCOAVARIABILI Proc METTIECONTAIMATTONCINI Else PRIMAPARTITA=FALSO End If Repeat Proc IMPOSTAILRIMBALZODELLEPALLINE Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA Proc AGGIORNAILPANNELLO If INIZIODELLIVELLO=VERO TESTOINIZIOGIOCO$="Get ready for level"+Str$(LIVELLO)+"!"+Chr$(10) TESTOINIZIOGIOCO$=TESTOINIZIOGIOCO$+"Press a (mouse) key to begin..." Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1] Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINIZIOGIOCO$,22,20,1,500] Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1] Proc IMPOSTAIBOING If SUONICARICATI=VERO Sam Play VOCE,1 : Proc VOCESEGUENTE Else Bell 20 End If INIZIODELLIVELLO=FALSO End If For PALLINA=0 To MASSIMOPALLINEINCAMPO-1 If PALLINA<PALLINEINCAMPO PALLINA(PALLINA)=VERO XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14 YPALLINA#(PALLINA)=YBARRA-3 Else PALLINA(PALLINA)=FALSO Proc CANCELLALAPALLINA[PALLINA] End If Next PALLINA Repeat TASTOCLICCATODELTOPO=Mouse Click XBARRA=X Screen(X Mouse) Proc MOSTRALABARRA Proc CAMBIALALUNGHEZZADELLABARRA Proc LIMITAIMOVIMENTIDELLABARRA For PALLINA=0 To MASSIMOPALLINEINCAMPO-1 If PALLINA(PALLINA)=VERO XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14 YPALLINA#(PALLINA)=YBARRA-3 Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA End If Next PALLINA Proc MOSTRAILLASER If T0GLILARIGA>0 If XRIGA>0 Dec XRIGA End If Proc MOSTRALARIGA[T0GLILARIGA] Else If RIGA>0 If XRIGA<XFINALERIGA Inc XRIGA Proc MOSTRALARIGA[RIGA] End If End If End If Proc MATTONCINIDIPOTENZIAMENTO[0,0] Proc BOINGINCAMPO If _PAPEROINCAMPO=VERO Proc _PAPEROINCAMPO End If If RITARDODELLENTRATAINCAMPODELPAPEROALIENO=0 Proc _PAPEROALIENOINCAMPO Proc MOLLAILGUANO Else Dec RITARDODELLENTRATAINCAMPODELPAPEROALIENO End If If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=1 ENTRATAINCAMPODELRUBAPALLINA=Rnd(2)>1 End If If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0 If ENTRATAINCAMPODELRUBAPALLINA=VERO Proc RUBAPALLINAINCAMPO End If Else Dec RITARDODELLENTRATAINCAMPODELRUBAPALLINA End If Bob Update TASTOPREMUTO$=Lower$(Inkey$) TASTOGRIGIO=Key Shift TASTOSCANSITO=Scancode Exit If TASTOPREMUTO$=Chr$(27) If TASTOPREMUTO$="p" Proc METTIILGIOCOINPAUSA End If If TASTOGRIGIO=4 If TASTOSCANSITO=80 : Rem F1 key Add LUNGHEZZADELLABARRACAMBIATA,1,0 To 2 Else If TASTOSCANSITO=81 : Rem F2 key Add PALLINEINCAMPO,1,1 To 5 For PALLINA=0 To MASSIMOPALLINEINCAMPO-1 If PALLINA<PALLINEINCAMPO PALLINA(PALLINA)=VERO Else PALLINA(PALLINA)=FALSO Proc CANCELLALAPALLINA[PALLINA] End If Next PALLINA Else If TASTOSCANSITO=82 : Rem F3 key If LASER=-1 LASER=1 Else If LASER=1 LASER=2 Else If LASER=2 LASER=3 Else If LASER=3 LASER=0 End If Else If TASTOSCANSITO=83 : Rem F4 key If RIGA>0 and T0GLILARIGA=0 T0GLILARIGA=RIGA End If Add RIGA,1,0 To 3 Else If TASTOPREMUTO$=" " Proc MATTONCINIDIPOTENZIAMENTO[-Rnd(18)-1,0] End If End If Until TASTOCLICCATODELTOPO>0 For PALLINA=0 To MASSIMOPALLINEINCAMPO-1 If PALLINA<PALLINEINCAMPO PALLINA(PALLINA)=VERO VELOCITADELLAPALLINA#(PALLINA)=1 D1REZIONEXPALLINA=Rnd(1) If D1REZIONEXPALLINA=1 DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA) Else DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA) End If DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA) Else PALLINA(PALLINA)=FALSO Proc CANCELLALAPALLINA[PALLINA] End If Next PALLINA Repeat TASTOCLICCATODELTOPO=Mouse Click If TASTOCLICCATODELTOPO=1 For PALLINA=0 To MASSIMOPALLINEINCAMPO-1 LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO Next PALLINA Else If TASTOCLICCATODELTOPO=2 Proc HAISPARATOILRAGGIOLASER End If If _BARRABLOCCATA>0 If _BARRABLOCCATA=1 X Mouse=X Hard(XBARRA) End If Dec _BARRABLOCCATA Else XBARRA=X Screen(X Mouse) End If Proc MOSTRALABARRA Proc CAMBIALALUNGHEZZADELLABARRA Proc LIMITAIMOVIMENTIDELLABARRA For PALLINA=0 To MASSIMOPALLINEINCAMPO-1 If PALLINA(PALLINA)=VERO If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO XPALLINA#(PALLINA)=XBARRA-XCOLLA(PALLINA) YPALLINA#(PALLINA)=YBARRA-YCOLLA(PALLINA) Else XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+DELTAXPALLINA#(PALLINA) YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+DELTAYPALLINA#(PALLINA) If TILTPALLINA=VERO XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+XTILTPALLINA YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+YTILTPALLINA End If If XPALLINA#(PALLINA)>XPANNELLO-1-3 XPALLINA#(PALLINA)=XPANNELLO-1-3 DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA) If SUONICARICATI=VERO Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE Else Boom End If Else If XPALLINA#(PALLINA)<3 XPALLINA#(PALLINA)=3 DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA) If SUONICARICATI=VERO Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE Else Boom End If Else If YPALLINA#(PALLINA)<3 YPALLINA#(PALLINA)=3 DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA) If SUONICARICATI=VERO Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE Else Boom End If End If If TILTPALLINA=VERO Add XTILTPALLINA,-Sgn(XTILTPALLINA) If XTILTPALLINA>0 XTILTPALLINA=Max(XTILTPALLINA,0) Else If XTILTPALLINA<0 XTILTPALLINA=Min(XTILTPALLINA,0) End If Add YTILTPALLINA,-Sgn(YTILTPALLINA) If YTILTPALLINA>0 YTILTPALLINA=Max(YTILTPALLINA,0) Else If YTILTPALLINA<0 YTILTPALLINA=Min(YTILTPALLINA,0) End If Screen Display 0,128+XTILTPALLINA,44+YTILTPALLINA,320,256 If XTILTPALLINA=0 and YTILTPALLINA=0 TILTPALLINA=FALSO End If Else If TASTOPREMUTO$=" " XTILTPALLINA=Rnd(32)-16 : YTILTPALLINA=Rnd(32)-16 : TILTPALLINA=VERO End If End If End If Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO Proc MATTONCINOCOLPITODALLAPALLINA[PALLINA] Proc LAPALLINAHACOLPITOLABARRA[PALLINA] Proc LAPALLINAHACOLPITOLARIGA[PALLINA] Proc LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA] End If End If Next PALLINA Exit If TASTOPREMUTO$=Chr$(27) TASTOPREMUTO$=Lower$(Inkey$) Exit If TASTOPREMUTO$=Chr$(27) If TASTOPREMUTO$="p" Proc METTIILGIOCOINPAUSA End If Proc MOSTRAILLASER Proc MOSTRAILRAGGIOLASER TASTOGRIGIO=Key Shift SHIFTSINISTRO=Btst(0,TASTOGRIGIO) SHIFTDESTRO=Btst(1,TASTOGRIGIO) TASTOMAIUSCOLE=Btst(2,TASTOGRIGIO) TASTISHIFTPREMUTI=SHIFTSINISTRO or SHIFTDESTRO or TASTOMAIUSCOLE If TASTISHIFTPREMUTI=FALSO Proc MATTONCINOCOLPITODALRAGGIOLASER End If Proc LABARRAESTATACOLPITADALRAGGIOLASERRIFLESSO If T0GLILARIGA>0 If XRIGA>0 Dec XRIGA : Proc MOSTRALARIGA[T0GLILARIGA] Else Proc T0GLILARIGA : DURATADELLARIGA=-1 End If Else If RIGA>0 If XRIGA<XFINALERIGA Inc XRIGA : Proc MOSTRALARIGA[RIGA] Else If DURATADELLARIGA=-1 DURATADELLARIGA=DURATADELLARIGA(RIGA-1) Else If DURATADELLARIGA=0 T0GLILARIGA=RIGA : RIGA=0 Else Dec DURATADELLARIGA End If End If End If End If Proc MATTONCINIDIPOTENZIAMENTO[0,0] Proc BOINGINCAMPO If _PAPEROINCAMPO=VERO Proc _PAPEROINCAMPO End If If RITARDODELLENTRATAINCAMPODELPAPEROALIENO=0 Proc _PAPEROALIENOINCAMPO Proc MOLLAILGUANO Else Dec RITARDODELLENTRATAINCAMPODELPAPEROALIENO End If If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=1 ENTRATAINCAMPODELRUBAPALLINA=Rnd(2)>1 End If If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0 If ENTRATAINCAMPODELRUBAPALLINA=VERO Proc RUBAPALLINAINCAMPO End If Else Dec RITARDODELLENTRATAINCAMPODELRUBAPALLINA End If Bob Update For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1 If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)>0 MATTONCINO=MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE) If MATTONCINO>0 X0MATTONCINO=X0ZONA(MATTONCINO-1) Y0MATTONCINO=Y0ZONA(MATTONCINO-1) TIPODIMATTONCINO=MATTONCINO(MATTONCINO-1) If TIPODIMATTONCINO=0 Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9 Else Paste Bob X0MATTONCINO,Y0MATTONCINO,82+TIPODIMATTONCINO End If End If Dec DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE) End If Next MATTONCINODARIDISEGNARE If BONUS>0 If RITARDODELDECREMENTODELBONUS=9 RITARDODELDECREMENTODELBONUS=0 : Dec BONUS : Proc MOSTRAILBONUS[FALSO] Else Inc RITARDODELDECREMENTODELBONUS End If End If Exit If MATTONCINI=0 Until PALLINEINCAMPO=0 Proc CANCELLALABARRA Proc CANCELLALEPALLINE Proc T0GLIILLASER Proc CANCELLAILRAGGIOLASER Proc CANCELLAIMATTONCINIDIPOTENZIAMENTO Proc CANCELLAILRUBAPALLINA Proc CANCELLAILPAPERO : _PAPEROINCAMPO=FALSO Proc CANCELLAILPAPEROALIENO Proc CANCELLAILGUANO Proc CANCELLAIBOING Proc CANCELLALARIGA Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1] Exit If TASTOPREMUTO$=Chr$(27) If MATTONCINI=0 Proc AGGIUNGIALPUNTEGGIOILBONUS Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1] Proc AGGIORNAILPANNELLO Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1] Proc AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1] Proc AGGIORNAILPANNELLO Inc LIVELLO INIZIODELLIVELLO=VERO End If If PALLINEINCAMPO>0 Proc CANCELLAIMATTONCINI Proc CARICAILLIVELLO Exit If LIVELLO<0 Proc DABANCOAVARIABILI Proc METTIECONTAIMATTONCINI Else Proc CANCELLALARIGA C0LLA=FALSO RIMBALZODELLEPALLINESUIMATTONCINI=VERO If LASER>0 Dec LASER End If Dec PALLINE : PALLINEINCAMPO=1 If SUONICARICATI=VERO Sam Play VOCE,5 : Proc VOCESEGUENTE Else Boom End If End If Until PALLINE=0 If TASTOPREMUTO$<>Chr$(27) Proc AGGIUNGIALPUNTEGGIOILBONUSPERLEPALLINERIMASTEAFINEGIOCO Proc FAIINSERIREALGIOCATOREILSUOPUNTEGGIO Proc SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI End If GREETING$="The game is finished."+Chr$(10) GREETING$=GREETING$+"I hope you have enjoyed."+Chr$(10) GREETING$=GREETING$+"Bye bye!" Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[GREETING$,20,22,1,1000] End If Until TASTO=-2 Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1] Flash Off : Proc DISSOLVENZADEICOLORI[0,1,1] Proc T0GLIIMATTONCINI Proc T0GLIILPANNELLO Proc T0GLILARCOBALENO Show : Rainbow Del 0 : Screen Close 0 : Erase All : End Procedure AGGIORNAILPANNELLO ' Update the panel Proc MOSTRAILPUNTEGGIO[VERO] Proc MOSTRAILPUNTEGGIOMASSIMO[VERO] Proc MOSTRALEPALLINERIMASTE Proc MOSTRAILLIVELLO Proc MOSTRAILBONUS[VERO] End Proc Procedure AGGIUNGIALPUNTEGGIOILBONUS ' Add the bonus to the score If BONUS>0 BONUS$="I am going to add the bonus points..."+Chr$(10) BONUS$=BONUS$+"...to your game points."+Chr$(10) BONUS$=BONUS$+"Wait for a moment, please..." Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1] Repeat TASTOPREMUTO$=Lower$(Inkey$) If TASTOPREMUTO$="p" Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1] Proc METTIILGIOCOINPAUSA End If Dec BONUS : Proc MOSTRAILBONUS[FALSO] Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO] Until BONUS=0 Else TASTOPREMUTO$=Lower$(Inkey$) If TASTOPREMUTO$="p" Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1] Proc METTIILGIOCOINPAUSA End If BONUS$="There are no bonus points..."+Chr$(10) BONUS$=BONUS$+"...to add to your game points."+Chr$(10) BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10) BONUS$=BONUS$+"Press a (mouse) key to continue..." Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000] End If End Proc Procedure AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI ' Add 2 points to the score for every brick left If MATTONCINIRIMASTI>0 BONUS$="I am going to add the bricks left bonus points..."+Chr$(10) BONUS$=BONUS$+"...to your game points,"+Chr$(10) BONUS$=BONUS$+"adding two points for each brick left."+Chr$(10) BONUS$=BONUS$+"There are"+Str$(MATTONCINIRIMASTI)+" bricks left..."+Chr$(10) BONUS$=BONUS$+"...wait for a moment, please..." Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1] Repeat TASTOPREMUTO$=Lower$(Inkey$) If TASTOPREMUTO$="p" Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1] Proc METTIILGIOCOINPAUSA End If Dec MATTONCINIRIMASTI Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO] Until MATTONCINIRIMASTI=0 Else TASTOPREMUTO$=Lower$(Inkey$) If TASTOPREMUTO$="p" Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1] Proc METTIILGIOCOINPAUSA End If BONUS$="There are no bricks left bonus points..."+Chr$(10) BONUS$=BONUS$+"...to add to your game points."+Chr$(10) BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10) BONUS$=BONUS$+"Press a (mouse) key to continue..." Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000] End If End Proc Procedure AGGIUNGIALPUNTEGGIOILBONUSPERLEPALLINERIMASTEAFINEGIOCO ' Add 500 points to the score for every ball left at the end of the game If PALLINE>0 BONUS$="I am going to add the ball left bonus points..."+Chr$(10) BONUS$=BONUS$+"...to your game points,"+Chr$(10) BONUS$=BONUS$+"adding 500 points for each ball left."+Chr$(10) BONUS$=BONUS$+"There are"+Str$(PALLINE)+" ball(s) left..."+Chr$(10) BONUS$=BONUS$+"...wait for a moment, please..." Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,-1] Repeat TASTOPREMUTO$=Lower$(Inkey$) If TASTOPREMUTO$="p" Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1] Proc METTIILGIOCOINPAUSA End If Dec PALLINE : Proc MOSTRALEPALLINERIMASTE Add PUNTEGGIO,500 : Proc MOSTRAILPUNTEGGIO[VERO] Sam Play VOCE,2 : Proc VOCESEGUENTE _ASPETTA[50] Until PALLINE=0 Else BONUS$="There are no balls left bonus points..."+Chr$(10) BONUS$=BONUS$+"...to add to your game points."+Chr$(10) BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next game."+Chr$(10) BONUS$=BONUS$+"Press a (mouse) key to continue..." Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000] End If End Proc Procedure _ASPETTA[TEMP0DAASPETTARE] ' Wait for a (mouse or grey) key pressed: ' if time to wait (TEMP0DAASPETTARE) is less than zero exit immediately; ' if time to wait is equal to zero wait forever; ' if time to wait is grater than zero wait the specified time. TASTO=0 Timer=0 Repeat TASTOPREMUTO$=Inkey$ TASTOGRIGIO=Key Shift TASTOPREMUTODELTOPO=Mouse Key If TASTOGRIGIO>0 and TASTOGRIGIO<>Key Shift Add TASTO,TASTOGRIGIO*256 : Exit End If If TASTOPREMUTODELTOPO>0 Then TASTO=-TASTOPREMUTODELTOPO : Exit If TASTOPREMUTO$<>"" Then TASTO=Asc(TASTOPREMUTO$) : Exit If TEMP0DAASPETTARE>0 Then TEMP0TRASCORSO=Timer If TEMP0DAASPETTARE<0 Then Pop Proc Until TEMP0TRASCORSO>TEMP0DAASPETTARE End Proc Procedure BOINGINCAMPO ' Manage the boings For BOING=0 To MASSIMOBOINGINCAMPO-1 If BOING(BOING)>0 If RITARDOBOING=0 Bob OGGETTOBOING+BOING,XBOING(BOING),YBOING(BOING),IMMAGINEBOING(BOING(BOING)-1) Add XBOING(BOING),Rnd(4)-2 Proc LIMITI[XBOING(BOING),0,XFINALERIGA] : XBOING(BOING)=Param Inc YBOING(BOING) Add BOING(BOING),1,1 To 8 End If Proc ILBOINGESTATOCOLPITO[BOING] Proc ILBOINGEUSCITODALCAMPODIGIOCO[BOING] Else If BOING(BOING)=0 XBOING(BOING)=Rnd(XFINALERIGA) : YBOING(BOING)=-9 : BOING(BOING)=Rnd(7)+1 If SUONICARICATI=VERO Sam Play VOCE,10 : Proc VOCESEGUENTE Else Bell 60 End If Else If BOING(BOING)<0 If BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING Proc CANCELLAILBOING[BOING] : Inc BOING(BOING) Else Inc BOING(BOING) End If End If Next BOING Add RITARDOBOING,1,0 To 3 End Proc Procedure CAMBIALALUNGHEZZADELLABARRA ' Change the bar size If LUNGHEZZADELLABARRACAMBIATA<>LUNGHEZZADELLABARRA If LUNGHEZZADELLABARRA=0 If LUNGHEZZADELLABARRACAMBIATA=1 Gosub LUNGHEZZADAZEROAUNO End If If LUNGHEZZADELLABARRACAMBIATA=2 Gosub LUNGHEZZADAZEROAUNO Gosub LUNGHEZZADAUNOADUE End If Else If LUNGHEZZADELLABARRA=1 If LUNGHEZZADELLABARRACAMBIATA=0 Gosub LUNGHEZZADAUNOAZERO End If If LUNGHEZZADELLABARRACAMBIATA=2 Gosub LUNGHEZZADAUNOADUE End If Else If LUNGHEZZADELLABARRA=2 If LUNGHEZZADELLABARRACAMBIATA=0 Gosub LUNGHEZZADADUEAUNO Gosub LUNGHEZZADAUNOAZERO End If If LUNGHEZZADELLABARRACAMBIATA=1 Gosub LUNGHEZZADADUEAUNO End If End If End If LUNGHEZZADELLABARRA=LUNGHEZZADELLABARRACAMBIATA Pop Proc LUNGHEZZADAZEROAUNO: ' From small to medium bar For OGGETTO=45 To 41 Step -1 Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5 Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO] Bob Update Next OGGETTO Return LUNGHEZZADAUNOADUE: ' From medium to large bar For OGGETTO=13 To 26 Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14 Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO] Bob Update Next OGGETTO Return LUNGHEZZADADUEAUNO: ' From large to medium bar For OGGETTO=26 To 13 Step -1 Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14 Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO] Bob Update Next OGGETTO Return LUNGHEZZADAUNOAZERO: ' From medium to small bar For OGGETTO=41 To 45 Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5 Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO] Bob Update Next OGGETTO Return End Proc Procedure CANCELLAIBOING ' Turn off all the boings For BOING=0 To MASSIMOBOINGINCAMPO-1 Bob Off OGGETTOBOING+BOING Next BOING Bob Update End Proc Procedure CANCELLAILBOING[BOING] ' Turn off the specified boing Bob Off OGGETTOBOING+BOING Bob Update End Proc Procedure CANCELLAILGUANO Bob Off OGGETTOGUANO Bob Update GUANOMOLLATO=FALSO GUANOINCAMPO=FALSO End Proc Procedure CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO] ' Turn off the specified bonus brick Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO Bob Update MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0 End Proc Procedure CANCELLAILPAPERO ' Turn off the duck Bob Off OGGETTOPAPERO Bob Update End Proc Procedure CANCELLAILPAPEROALIENO ' Turn off the alien duck Bob Off OGGETTOPAPEROALIENO Bob Update _PAPEROALIENO=0 _PAPEROALIENOINCAMPO=FALSO End Proc Procedure CANCELLAILRAGGIOLASER ' Turn off the laser ray Bob Off OGGETTORAGGIOLASER Bob Update RAGGIOLASERSPARATO=FALSO End Proc Procedure CANCELLAILRUBAPALLINA ' Turn off the ballthief Bob Off OGGETTORUBAPALLINA Bob Update Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO End Proc Procedure CANCELLAIMATTONCINI ' Clear the bricks area Cls 0,0,0 To XPANNELLO,Screen Height End Proc Procedure CANCELLAIMATTONCINIDIPOTENZIAMENTO ' Turn off all the bonus bricks For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1 If MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>0 Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO End If MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0 Next MATTONCINODIPOTENZIAMENTO Bob Update End Proc Procedure CANCELLALABARRA ' Turn off the bar Bob Off OGGETTOCENTRODELLABARRA Bob Off OGGETTOLATIDELLABARRA Bob Update End Proc Procedure CANCELLALAPALLINA[PALLINA] ' Turn off the specified ball Bob Off OGGETTOPALLINA+PALLINA Bob Update End Proc Procedure CANCELLALARIGA ' Turn off the row If RIGA>0 T0GLILARIGA=RIGA : RIGA=0 For XRIGA=XRIGA To 0 Step -1 Proc MOSTRALARIGA[T0GLILARIGA] : Wait Vbl Next XRIGA DURATADELLARIGA=-1 End If End Proc Procedure CANCELLALEPALLINE ' Turn off all the balls For PALLINA=0 To MASSIMOPALLINEINCAMPO-1 Bob Off OGGETTOPALLINA+PALLINA Next PALLINA Bob Update End Proc Procedure CARICAGLIOGGETTI ' Load the objects Load PERCORSODELLAGRAFICA$+OGGETTI$ End Proc Procedure CARICAILLIVELLO ' Load the level LIVELLO$="Livello"+Str$(LIVELLO)-" " FILE$=PERCORSODEILIVELLI$+LIVELLO$ If Exist(FILE$) Open In 1,FILE$ MARCATORE$=Input$(1,9) LUNGHEZZABANCO=Lof(1) Close 1 If MARCATORE$="Mattonite" Reserve As Work BANCO,LUNGHEZZABANCO Bload FILE$,Start(BANCO) End If Else LIVELLO= Not LIVELLO End If End Proc Procedure CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI ' Load the top hundred scores If Exist(PUNTEGGI$) CENTOGIOCATORI$="" Open In 1,PUNTEGGI$ For POSIZIONE=0 To 99 Exit If Eof(1) Input #1,NOMEDELGIOCATORE$(POSIZIONE) CENTOGIOCATORI$=CENTOGIOCATORI$+"<"+Str$(POSIZIONE+1)-" "+"> " CENTOGIOCATORI$=CENTOGIOCATORI$+NOMEDELGIOCATORE$(POSIZIONE)+Chr$(10) Input #1,PUNTEGGIODELGIOCATORE$(POSIZIONE) CENTOGIOCATORI$=CENTOGIOCATORI$+PUNTEGGIODELGIOCATORE$(POSIZIONE) CENTOGIOCATORI$=CENTOGIOCATORI$+" points up to level " Input #1,LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE) CENTOGIOCATORI$=CENTOGIOCATORI$+LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE) If Not Eof(1) CENTOGIOCATORI$=CENTOGIOCATORI$+Chr$(10) End If Next POSIZIONE Close 1 PUNTEGGIOMASSIMO=Val(PUNTEGGIODELGIOCATORE$(0)) Inc POSIZIONE End If End Proc Procedure CARICAISUONI ' Load the sounds Load PERCORSODELLAMUSICA$+SUONI$ End Proc Procedure CREALEIMMAGINIPERLERIGHE ' Create the row images XFINALERIGA=XPANNELLO-1 IMMAGINERIGAUNO=IMMAGINEPALLINA+1 Ink 20 : Bar 0,251 To XFINALERIGA,255 Get Bob IMMAGINERIGAUNO,0,251 To XFINALERIGA+1,255+1 Hot Spot IMMAGINERIGAUNO,XFINALERIGA,0 IMMAGINERIGADUE=IMMAGINERIGAUNO+1 Ink 21 : Bar 0,251 To XFINALERIGA,255 Get Bob IMMAGINERIGADUE,0,251 To XFINALERIGA+1,255+1 Hot Spot IMMAGINERIGADUE,XFINALERIGA,0 IMMAGINERIGATRE=IMMAGINERIGADUE+1 Ink 22 : Bar 0,251 To XFINALERIGA,255 Get Bob IMMAGINERIGATRE,0,251 To XFINALERIGA+1,255+1 Hot Spot IMMAGINERIGATRE,XFINALERIGA,0 Ink 0 : Bar 0,251 To XFINALERIGA,255 End Proc Procedure CREATESTOBORDATO[XTESTO,YTESTO,TESTO$,C0LORETESTO,C0LOREBORDO] ' Create outlined text Ink C0LOREBORDO Text XTESTO,YTESTO-1,TESTO$ Text XTESTO+1,YTESTO-1,TESTO$ Text XTESTO+1,YTESTO,TESTO$ Text XTESTO+1,YTESTO+1,TESTO$ Text XTESTO,YTESTO+1,TESTO$ Text XTESTO-1,YTESTO+1,TESTO$ Text XTESTO-1,YTESTO,TESTO$ Text XTESTO-1,YTESTO-1,TESTO$ Ink C0LORETESTO Text XTESTO,YTESTO,TESTO$ End Proc Procedure DABANCOAVARIABILI ' Copy from bank to variables If Length(BANCO)>0 INDIRIZZO=Start(BANCO)+9 For A=0 To 246 MATTONCINO(A)=Peek(INDIRIZZO) Inc INDIRIZZO Next A For A=0 To 255 ARCOBALENO=Peek(INDIRIZZO) Inc INDIRIZZO ARCOBALENO=ARCOBALENO+Peek(INDIRIZZO)*$100 Rain(0,A)=ARCOBALENO : Rainbow 0,257,0,271 Wait Vbl Inc INDIRIZZO Next A BONUS=Peek(INDIRIZZO) Inc INDIRIZZO Add BONUS,Peek(INDIRIZZO)*100 Inc INDIRIZZO Add BONUS,Peek(INDIRIZZO)*10000 Inc INDIRIZZO Add BONUS,Peek(INDIRIZZO)*1000000 Inc INDIRIZZO End If Erase BANCO End Proc Procedure DISSOLVENZADEICOLORI[C0LORE,VELOCITA,M0DO] ' Fade the colours If M0DO=0 For C=0 To C0LORIDELLOSCHERMOMENOUNO Colour C,C0LORE If VELOCITA>0 Wait VELOCITA End If Next C Else Dim ROSSO(C0LORIDELLOSCHERMOMENOUNO),VERDE(C0LORIDELLOSCHERMOMENOUNO),BLU(C0LORIDELLOSCHERMOMENOUNO) Dim ROSSOFINALE(C0LORIDELLOSCHERMOMENOUNO),VERDEFINALE(C0LORIDELLOSCHERMOMENOUNO),BLUFINALE(C0LORIDELLOSCHERMOMENOUNO) Dim ROSSODISSOLTO(C0LORIDELLOSCHERMOMENOUNO),VERDEDISSOLTO(C0LORIDELLOSCHERMOMENOUNO),BLUDISSOLTO(C0LORIDELLOSCHERMOMENOUNO) For C=0 To C0LORIDELLOSCHERMOMENOUNO If M0DO=1 ROSSOFINALE(C)=C0LORE/256 VERDEFINALE(C)=C0LORE/16 mod 16 BLUFINALE(C)=C0LORE mod 16 Else If M0DO=2 ROSSOFINALE(C)=C0LORE(C)/256 VERDEFINALE(C)=C0LORE(C)/16 mod 16 BLUFINALE(C)=C0LORE(C) mod 16 End If ROSSO(C)=Colour(C)/256 VERDE(C)=Colour(C)/16 mod 16 BLU(C)=Colour(C) mod 16 Next C Repeat For C=0 To C0LORIDELLOSCHERMOMENOUNO If ROSSODISSOLTO(C)=FALSO If ROSSO(C)<ROSSOFINALE(C) Inc ROSSO(C) Else If ROSSO(C)=ROSSOFINALE(C) ROSSODISSOLTO(C)=VERO Else If ROSSO(C)>ROSSOFINALE(C) Dec ROSSO(C) End If End If If VERDEDISSOLTO(C)=FALSO If VERDE(C)<VERDEFINALE(C) Inc VERDE(C) Else If VERDE(C)=VERDEFINALE(C) VERDEDISSOLTO(C)=VERO Else If VERDE(C)>VERDEFINALE(C) Dec VERDE(C) End If End If If BLUDISSOLTO(C)=FALSO If BLU(C)<BLUFINALE(C) Inc BLU(C) Else If BLU(C)=BLUFINALE(C) BLUDISSOLTO(C)=VERO Else If BLU(C)>BLUFINALE(C) Dec BLU(C) End If End If Colour C,ROSSO(C)*256+VERDE(C)*16+BLU(C) If C=0 C0LORIDISSOLTI=0 End If If ROSSODISSOLTO(C)=VERO If VERDEDISSOLTO(C)=VERO If BLUDISSOLTO(C)=VERO Inc C0LORIDISSOLTI End If End If End If Next C If VELOCITA>0 Wait VELOCITA End If Until C0LORIDISSOLTI=C0LORIDELLOSCHERMOMENOUNO+1 End If End Proc Procedure FAIINSERIREALGIOCATOREILSUOPUNTEGGIO ' Let the player type his/her name and then insert name and score in the top ' hundred scores GIOCATORE$="Anonymous" Repeat MESSAGGIO$="" MESSAGGIO$=MESSAGGIO$+"You have entered the Top Hundred Scores..."+Chr$(10) MESSAGGIO$=MESSAGGIO$+"...at position"+Str$(POSIZIONE)+"."+Chr$(10) MESSAGGIO$=MESSAGGIO$+"Please backspace the Anonymous player..."+Chr$(10) MESSAGGIO$=MESSAGGIO$+"...and type your name; press Return when done."+Chr$(10) MESSAGGIO$=MESSAGGIO$+GIOCATORE$+Chr$(10) Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,9000] If TASTO=0 GIOCATORE$="Anonymous" : TASTO=13 End If If TASTO>255 TASTO=TASTO mod 256 End If If TASTO=8 GIOCATORE$=Left$(GIOCATORE$,Len(GIOCATORE$)-1) Else If TASTO=27 TASTO=13 : TASTOESCAPEPREMUTO=VERO Else If TASTO>31 GIOCATORE$=GIOCATORE$+Chr$(TASTO) End If Until TASTO=13 If TASTOESCAPEPREMUTO=FALSO For POSIZIONI=98 To 0 Step -1 If Val(PUNTEGGIODELGIOCATORE$(POSIZIONI))<PUNTEGGIO NOMEDELGIOCATORE$(POSIZIONI+1)=NOMEDELGIOCATORE$(POSIZIONI) PUNTEGGIODELGIOCATORE$(POSIZIONI+1)=PUNTEGGIODELGIOCATORE$(POSIZIONI) LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI+1)=LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI) End If Next POSIZIONI NOMEDELGIOCATORE$(POSIZIONE-1)=GIOCATORE$ PUNTEGGIODELGIOCATORE$(POSIZIONE-1)=Str$(PUNTEGGIO)-" " If LIVELLO<0 LIVELLO= Not LIVELLO End If LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONE-1)=Str$(LIVELLO)-" " End If End Proc Procedure HAISPARATOILRAGGIOLASER ' Fire the laser ray If LASER>0 and RAGGIOLASERSPARATO=FALSO XLASER=XBARRA : YLASER=YBARRA+5 : IMMAGINERAGGIOLASER=9+LASER RAGGIOLASERSPARATO=VERO If SUONICARICATI=VERO Sam Play VOCE,4,8363/SEMITONO#^LASER : Proc VOCESEGUENTE Else Shoot End If End If End Proc Procedure ILBOINGESTATOCOLPITO[BOING] ' Check if the specified boing has been hitted If Bob Col(OGGETTOBOING+BOING,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO PALLINA=Col(-1)-OGGETTOPALLINA XDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(XBOING(BOING)-Int(XPALLINA#(PALLINA))) If XDISTANZADELLAPALLINADALBOINGCOLPITO>9 DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA) End If YDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(YBOING(BOING)-Int(YPALLINA#(PALLINA))) If YDISTANZADELLAPALLINADALBOINGCOLPITO>9 DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA) End If Add PUNTEGGIO,3 : Proc MOSTRAILPUNTEGGIO[VERO] BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING If SUONICARICATI=VERO Sam Play VOCE,9 : Proc VOCESEGUENTE Else Bell 3 End If Else If Bob Col(OGGETTOBOING+BOING,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO Proc CANCELLAILRAGGIOLASER Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO] BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING If SUONICARICATI=VERO Sam Play VOCE,9 : Proc VOCESEGUENTE Else Bell 2 End If Else If Bob Col(OGGETTOBOING+BOING,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO] BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING If SUONICARICATI=VERO Sam Play VOCE,9 : Proc VOCESEGUENTE Else Bell 1 End If End If End Proc Procedure ILBOINGEUSCITODALCAMPODIGIOCO[BOING] ' Check if the specified boing has gone out of the game field If YBOING(BOING)>255+9 Then BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING End Proc Procedure ILGUANOEUSCITODALCAMPODIGIOCO ' Check if the guano has gone out of the game field If YGUANO>255 Then Proc CANCELLAILGUANO End Proc Procedure ILPAPEROALIENOESTATOCOLPITO 'check if the alien duck has been hitted If Bob Col(OGGETTOPAPEROALIENO,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO PALLINA=Col(-1)-OGGETTOPALLINA XPALLINA=Int(XPALLINA#(PALLINA)) XDISTANZADELLAPALLINADALPAPEROALIENO=Abs(XPAPEROALIENO-XPALLINA) If XDISTANZADELLAPALLINADALPAPEROALIENO>12 DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA) End If YPALLINA=Int(YPALLINA#(PALLINA)) YDISTANZADELLAPALLINADALPAPEROALIENO=YPAPEROALIENO-YPALLINA If YDISTANZADELLAPALLINADALPAPEROALIENO>-21 and YDISTANZADELLAPALLINADALPAPEROALIENO<10 DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA) End If Add PUNTEGGIO,24 : Proc MOSTRAILPUNTEGGIO[VERO] If SUONICARICATI=VERO Sam Play VOCE,9 : Proc VOCESEGUENTE Else Boom End If _PAPEROALIENOCOLPITO=VERO Else If Bob Col(OGGETTOPAPEROALIENO,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO Proc CANCELLAILRAGGIOLASER Add PUNTEGGIO,12 : Proc MOSTRAILPUNTEGGIO[VERO] If SUONICARICATI=VERO Sam Play VOCE,9 : Proc VOCESEGUENTE Else Boom End If _PAPEROALIENOCOLPITO=VERO Else If Bob Col(OGGETTOPAPEROALIENO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO Add PUNTEGGIO,6 : Proc MOSTRAILPUNTEGGIO[VERO] If SUONICARICATI=VERO Sam Play VOCE,9 : Proc VOCESEGUENTE Else Boom End If _PAPEROALIENOCOLPITO=VERO End If If _PAPEROALIENOCOLPITO=VERO Proc CANCELLAILPAPEROALIENO Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO Proc CANCELLAILGUANO End If End Proc Procedure ILPAPEROALIENOEUSCITODALCAMPODIGIOCO ' Check if the alien duck has gone out of the game field If YPAPEROALIENO>255+9 Then Proc CANCELLAILPAPEROALIENO End Proc Procedure ILRUBAPALLINAESTATOCOLPITO ' Check if the ballthief has been hitted If RUBAPALLINACOLPITO=FALSO For PALLINA=0 To MASSIMOPALLINEINCAMPO-1 If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO If PALLINA<>PALLINAPRESADALRUBAPALLINA If Bob Col(OGGETTORUBAPALLINA,OGGETTOPALLINA+PALLINA To OGGETTOPALLINA+PALLINA)=VERO XPALLINA=Int(XPALLINA#(PALLINA)) XDISTANZADELLAPALLINADALRUBAPALLINA=Abs(XRUBAPALLINA-XPALLINA) If XDISTANZADELLAPALLINADALRUBAPALLINA>12 DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA) End If YPALLINA=Int(YPALLINA#(PALLINA)) YDISTANZADELLAPALLINADALRUBAPALLINA=YRUBAPALLINA-YPALLINA If YDISTANZADELLAPALLINADALRUBAPALLINA>0 and YDISTANZADELLAPALLINADALRUBAPALLINA<11 DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA) End If Add PUNTEGGIO,50 : Proc MOSTRAILPUNTEGGIO[VERO] If SUONICARICATI=VERO Sam Play VOCE,9 : Proc VOCESEGUENTE Else Boom End If RUBAPALLINACOLPITO=VERO End If End If End If Next PALLINA If Bob Col(OGGETTORUBAPALLINA,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO Proc CANCELLAILRAGGIOLASER Add PUNTEGGIO,100 : Proc MOSTRAILPUNTEGGIO[VERO] If SUONICARICATI=VERO Sam Play VOCE,9 : Proc VOCESEGUENTE Else Boom End If RUBAPALLINACOLPITO=VERO Else If Bob Col(OGGETTORUBAPALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO Add PUNTEGGIO,200 : Proc MOSTRAILPUNTEGGIO[VERO] If SUONICARICATI=VERO Sam Play VOCE,9 : Proc VOCESEGUENTE Else Boom End If RUBAPALLINACOLPITO=VERO End If Else Inc IMMAGINERUBAPALLINA If IMMAGINERUBAPALLINA=10 Proc CANCELLAILRUBAPALLINA Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO PALLINA(PALLINAPRESADALRUBAPALLINA)=VERO End If PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO IMMAGINERUBAPALLINA=0 RUBAPALLINACOLPITO=FALSO End If End If End Proc Procedure ILRUBAPALLINAEUSCITODALCAMPODIGIOCO ' Check if the ballthief has gone out of the game field If YRUBAPALLINA<-4 Proc CANCELLAILRUBAPALLINA PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO Dec PALLINEINCAMPO End If End Proc Procedure IMPOSTAGLIOGGETTI ' Set the object images IMMAGINEPALLINA=Length(1) IMMAGINELASER=6 MATTONCINIDIPOTENZIAMENTO=Length(1)-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO*2-116 For IMMAGINE=0 To IMMAGINIBOING-1 IMMAGINEBOING(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING+IMMAGINE Next IMMAGINE For IMMAGINE=0 To IMMAGINIRUBAPALLINA-1 IMMAGINERUBAPALLINA(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA+IMMAGINE Next IMMAGINE IMMAGINEGUANO=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO For IMMAGINE=0 To IMMAGINIPAPERO-1 IMMAGINEPAPEROALIENO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO+IMMAGINE Next IMMAGINE For IMMAGINE=0 To IMMAGINIPAPERO-1 IMMAGINEPAPERO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIGUANO-IMMAGINIPAPERO*2+IMMAGINE Next IMMAGINE End Proc Procedure IMPOSTAIBOING ' Set the boings to their initial status For BOING=0 To MASSIMOBOINGINCAMPO-1 BOING(BOING)=0 Next BOING End Proc Procedure IMPOSTAICOLORI ' Remember the screen palette Get Bob Palette C0LORIDELLOSCHERMOMENOUNO=Screen Colour-1 If C0LORIDELLOSCHERMOMENOUNO=63 Then C0LORIDELLOSCHERMOMENOUNO=31 For C=0 To C0LORIDELLOSCHERMOMENOUNO C0LORE(C)=Colour(C) Next C End Proc Procedure IMPOSTAILAMPEGGI ' Set the colour flashes Flash 20,"(0FF,2)(FFF,1)(0FF,2)(000,1)" Flash 21,"(F70,2)(FFF,1)(F70,2)(000,1)" Flash 22,"(F77,9)(FF7,9)(7F7,9)(7FF,9)(77F,9)(F7F,9)" End Proc Procedure IMPOSTAILRIMBALZODELLEPALLINE ' Set the bouncign of the balls to their initial state For PALLINA=0 To MASSIMOPALLINEINCAMPO-1 LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO Next PALLINA End Proc Procedure IMPOSTAILRITARDODELLENTRATAINCAMPODELPAPEROALIENO RITARDODELLENTRATAINCAMPODELPAPEROALIENO=29475-LIVELLO*25 End Proc Procedure IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA RITARDODELLENTRATAINCAMPODELRUBAPALLINA=55950-LIVELLO*50 End Proc Procedure IMPOSTAIPERCORSIDEIFILE ' Look for the file paths PERCORSODELLAGRAFICA$=PERCORSO$+"Grafica/" PERCORSODEILIVELLI$=PERCORSO$+"Livelli/" PERCORSODELLAMUSICA$=PERCORSO$+"Musica/" End Proc Procedure IMPOSTALADURATADELLERIGHE ' Set the time duration of the rows in 50th of a second DURATADELLARIGA(0)=3000 DURATADELLARIGA(1)=9000 DURATADELLARIGA(2)=27000 End Proc Procedure IMPOSTALARCOBALENO ' Set the rainbow Set Rainbow 0,0,271,"","","" For LINEADELLARCOBALENO=0 To 255 Rain(0,LINEADELLARCOBALENO)=$FFF Next LINEADELLARCOBALENO Rainbow 0,257,0,271 End Proc Procedure IMPOSTALEVOCI 'Set the audio voices For VOCE=0 To 3 VOCE(VOCE)=2^VOCE Next VOCE End Proc Procedure IMPOSTALEZONEDEIMATTONCINI ' Set the brick detection zones Reserve Zone 264 For MATTONCINO=0 To 246 LINEADELMATTONCINO=MATTONCINO/13 : RIGADELMATTONCINO=MATTONCINO mod 13 X0ZONA(MATTONCINO)=RIGADELMATTONCINO*21 Y0ZONA(MATTONCINO)=LINEADELMATTONCINO*11 X0MATTONCINO=X0ZONA(MATTONCINO) Y0MATTONCINO=Y0ZONA(MATTONCINO) If RIGADELMATTONCINO=12 X1MATTONCINO=X0MATTONCINO+19 Y1MATTONCINO=Y0MATTONCINO+9 Else X1MATTONCINO=X0MATTONCINO+20 Y1MATTONCINO=Y0MATTONCINO+10 End If Set Zone MATTONCINO+1,X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO Next MATTONCINO End Proc Procedure IMPOSTALINGOMBRODELLABARRA ' Set the length of the bars from the center to an edge INGOMBRODELLABARRA(0)=10 INGOMBRODELLABARRA(1)=16 INGOMBRODELLABARRA(2)=31 End Proc Procedure IMPOSTALOSCHERMO ' Set the screen Screen Open 0,320,256,64,Lowres : Curs Off : Flash Off : Pen 1 : Paper 0 : Cls Bob Update Off : Gr Writing 0 : Wait Vbl : Limit Mouse End Proc Procedure INDIVIDUALAPOSIZIONEDELPROGRAMMA ' Look for the position of the program PERCORSO$=Dir$ End Proc Procedure LABARRAESTATACOLPITADALGUANO 'Check if the bar has been hitted by the guano If GUANOINCAMPO=VERO and GUANOMOLLATO=VERO If Bob Col(OGGETTOGUANO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO EFFETTODELGUANO=Rnd(2) If EFFETTODELGUANO=2 If LASER>0 Dec LASER End If Else If EFFETTODELGUANO=1 _BARRABLOCCATA=50+LIVELLO End If Proc CANCELLAILGUANO End If End If End Proc Procedure LABARRAESTATACOLPITADALRAGGIOLASERRIFLESSO ' Check if the bar has been hitted by the reflected laser ray If RAGGIOLASERSPARATO=VERO and RAGGIOLASERRIFLESSO=VERO If Bob Col(OGGETTORAGGIOLASER,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO EFFETTODELRAGGIOLASERRIFLESSO=Rnd(2) If EFFETTODELRAGGIOLASERRIFLESSO=2 If LASER>0 Dec LASER End If Else If EFFETTODELRAGGIOLASERRIFLESSO=1 _BARRABLOCCATA=50+LIVELLO End If Proc CANCELLAILRAGGIOLASER RAGGIOLASERRIFLESSO=FALSO End If End If End Proc Procedure LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA] ' Check if the specified ball has gone out of the game field If YPALLINA#(PALLINA)>255+3 Proc CANCELLALAPALLINA[PALLINA] PALLINA(PALLINA)=FALSO Dec PALLINEINCAMPO End If End Proc Procedure LAPALLINAHACOLPITOLABARRA[PALLINA] ' Check if the specified ball has hitted the bar If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO If LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO If C0LLA=VERO XCOLLA(PALLINA)=XBARRA-Int(XPALLINA#(PALLINA)) YCOLLA(PALLINA)=YBARRA-Int(YPALLINA#(PALLINA)) LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO End If If Col(OGGETTOCENTRODELLABARRA)=VERO If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)/2.0 DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)*2 LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO Else DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA) End If If SUONICARICATI=VERO Sam Play VOCE,2 : Proc VOCESEGUENTE Else Boom End If Else If Col(OGGETTOLATIDELLABARRA)=VERO If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA) Else DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)*2 DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)/2.0 LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO End If If SUONICARICATI=VERO Sam Play VOCE,2,8363/2 : Proc VOCESEGUENTE Else Boom End If End If LAPALLINAHACOLPITOLABARRA(PALLINA)=VERO End If Else LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO End If End Proc Procedure LAPALLINAHACOLPITOLARIGA[PALLINA] ' Check if the specified ball has hitted the row If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTORIGA To OGGETTORIGA)=VERO If DELTAYPALLINA#(PALLINA)>0 DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA) If SUONICARICATI=VERO Sam Play VOCE,7 : Proc VOCESEGUENTE Else Bell 96 End If End If End If End Proc Procedure LIMITAIMOVIMENTIDELLABARRA ' Lock bar movements X0LIMITETOPO=X Hard(INGOMBRODELLABARRA(LUNGHEZZADELLABARRA)) Y0LIMITETOPO=Y Hard(0) X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA(LUNGHEZZADELLABARRA)) Y1LIMITETOPO=Y Hard(Screen Height-1) Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO End Proc Procedure LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO] ' Lock bar movements while it is changing If OGGETTO>39 and OGGETTO<46 INGOMBRODELLABARRA=46-OGGETTO+10 Else If OGGETTO>12 and OGGETTO<27 INGOMBRODELLABARRA=OGGETTO+4 End If X0LIMITETOPO=X Hard(INGOMBRODELLABARRA) Y0LIMITETOPO=Y Hard(0) X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA) Y1LIMITETOPO=Y Hard(Screen Height-1) Wait Vbl Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO End Proc Procedure LIMITI[NUMERO,LIMITEMINIMO,LIMITEMASSIMO] '-> Limiti by Stefano Regattin 'i> 19 maggio 1996 'm> 12 giugno 1996 '-------------------------------------------------------- 'La procedura equivale alle seguenti linee di programma: ' If NUMERO<LIMITEMINIMO Then NUMERO=LIMITEMINIMO ' If NUMERO>LIMITEMASSIMO Then NUMERO=LIMITEMASSIMO 'Se LIMITEMINIMO è maggiore di LIMITEMASSIMO ne scambia i valori '---------------------------------------------------------------- If LIMITEMINIMO>LIMITEMASSIMO Then Swap LIMITEMINIMO,LIMITEMASSIMO NUMERO=Max(Min(NUMERO,LIMITEMASSIMO),LIMITEMINIMO) End Proc[NUMERO] Procedure MATTONCINIDIPOTENZIAMENTO[MATTONCINO,ESCESEUGUALEAZERO] ' Manage the bonus bricks If ESCESEUGUALEAZERO>0 Then Pop Proc If MATTONCINO=0 For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1 TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO) If TIPODIMATTONCINODIPOTENZIAMENTO>0 Bob OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),115+TIPODIMATTONCINODIPOTENZIAMENTO Proc MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO] Inc YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO) Proc MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO] End If Next MATTONCINODIPOTENZIAMENTO Else For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1 TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO) If TIPODIMATTONCINODIPOTENZIAMENTO=0 If MATTONCINO>0 MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Rnd(19)+1 XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=X0ZONA(MATTONCINO-1) YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Y0ZONA(MATTONCINO-1) Else If MATTONCINO<0 MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-MATTONCINO XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=XBARRA-9 YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-9 End If Exit End If Next MATTONCINODIPOTENZIAMENTO End If End Proc Procedure MATTONCINOCOLPITODALLAPALLINA[PALLINA] ' Check if a brick has been hitted by the specified ball XPALLINA=Int(XPALLINA#(PALLINA)) : YPALLINA=Int(YPALLINA#(PALLINA)) MATTONCINO=Zone(XPALLINA,YPALLINA) If MATTONCINO>0 MATTONELLA=MATTONCINO(MATTONCINO-1) If MATTONELLA>0 If MATTONELLA<10 MATTONCINOELIMINATODALLAPALLINA=VERO Else If MATTONELLA>9 and MATTONELLA<28 Add MATTONELLA,-9 MATTONCINO(MATTONCINO-1)=MATTONELLA Proc RIDISEGNODELMATTONCINO[MATTONCINO,100] Else Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)] MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO End If If MATTONCINOELIMINATODALLAPALLINA=VERO Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO] Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(19)] Proc RIDISEGNODELMATTONCINO[MATTONCINO,100] MATTONCINO(MATTONCINO-1)=0 End If Y0MATTONCINO=Y0ZONA(MATTONCINO-1) Y1MATTONCINO=Y0MATTONCINO+9 If RIMBALZODELLEPALLINESUIMATTONCINI=VERO If YPALLINA<Y1MATTONCINO and YPALLINA>Y0MATTONCINO DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA) Else DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA) End If If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO If SUONICARICATI=VERO Sam Play VOCE,3,8363*SEMITONO#^4 : Proc VOCESEGUENTE Else Bell 40 End If Else If SUONICARICATI=VERO Sam Play VOCE,3 : Proc VOCESEGUENTE Else Bell 30 End If End If Else If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO If SUONICARICATI=VERO Sam Play VOCE,6,8363*SEMITONO#^4 : Proc VOCESEGUENTE Else Bell 60 End If Else If SUONICARICATI=VERO Sam Play VOCE,6 : Proc VOCESEGUENTE Else Bell 50 End If End If End If End If End If End Proc Procedure MATTONCINOCOLPITODALRAGGIOLASER ' Check if a brick has been hitted by the laser ray If RAGGIOLASERSPARATO=VERO MATTONCINO=Zone(XLASER,YLASER) If MATTONCINO>0 MATTONELLA=MATTONCINO(MATTONCINO-1) If MATTONELLA>0 If MATTONELLA<10 MATTONCINOELIMINATODALRAGGIOLASER=VERO Else If MATTONELLA>9 and MATTONELLA<28 Proc CANCELLAILRAGGIOLASER Add MATTONELLA,-9 MATTONCINO(MATTONCINO-1)=MATTONELLA Proc RIDISEGNODELMATTONCINO[MATTONCINO,100] Else If MATTONELLA=28 MATTONCINOELIMINATODALRAGGIOLASER=VERO Else If MATTONELLA=29 and LASER>1 MATTONCINOELIMINATODALRAGGIOLASER=VERO Else If MATTONELLA=30 and LASER=3 MATTONCINOELIMINATODALRAGGIOLASER=VERO Else If MATTONELLA=31 RAGGIOLASERRIFLESSO=VERO QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO MATTONCINOELIMINATODALRAGGIOLASER=VERO Else If MATTONELLA=32 and LASER>1 RAGGIOLASERRIFLESSO=VERO QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO MATTONCINOELIMINATODALRAGGIOLASER=VERO Else If MATTONELLA=33 and LASER=3 RAGGIOLASERRIFLESSO=VERO QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=VERO MATTONCINOELIMINATODALRAGGIOLASER=VERO End If End If If MATTONCINOELIMINATODALRAGGIOLASER=VERO If RAGGIOLASERRIFLESSO=FALSO or QUESTOEILMATTONCINOCHEHARIFLESSOILRAGGIOLASER=FALSO Proc CANCELLAILRAGGIOLASER End If Proc RIDISEGNODELMATTONCINO[MATTONCINO,100] Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO] Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)] MATTONCINO(MATTONCINO-1)=0 End If End If End If End If End Proc Procedure MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO] ' Check if the bar has met the specified bonus brick If Bob Col(OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO MATTONCINODIPOTENZIAMENTOASORPRESA=VERO Add PUNTEGGIO,20 Else Add PUNTEGGIO,10 End If Proc MOSTRAILPUNTEGGIO[VERO] Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO] Repeat If TIPODIMATTONCINODIPOTENZIAMENTO=1 : Rem add a ball in the game field For PALLINA=0 To MASSIMOPALLINEINCAMPO-1 If PALLINA(PALLINA)=FALSO PALLINA(PALLINA)=VERO XPALLINA#(PALLINA)=XBARRA YPALLINA#(PALLINA)=YBARRA-3 VELOCITADELLAPALLINA#(PALLINA)=1 D1REZIONEXPALLINA=Rnd(1) If D1REZIONEXPALLINA=1 DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA) Else DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA) End If DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA) Inc PALLINEINCAMPO Exit End If Next If SUONICARICATI=VERO Sam Play VOCE,16 : Proc VOCESEGUENTE Else Bell 30 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=2 : Rem b(all)+ If PALLINE<1000 Inc PALLINE : Proc MOSTRALEPALLINERIMASTE End If If SUONICARICATI=VERO Sam Play VOCE,16 : Proc VOCESEGUENTE Else Bell 30 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=3 : Rem b(all)- If PALLINE>0 Dec PALLINE : Proc MOSTRALEPALLINERIMASTE End If If SUONICARICATI=VERO Sam Play VOCE,17 : Proc VOCESEGUENTE Else Bell 10 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=4 : Rem B(ar)+ If LUNGHEZZADELLABARRA<2 Inc LUNGHEZZADELLABARRACAMBIATA End If If SUONICARICATI=VERO Sam Play VOCE,16 : Proc VOCESEGUENTE Else Bell 30 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=5 : Rem B(ar)- If LUNGHEZZADELLABARRA>0 Dec LUNGHEZZADELLABARRACAMBIATA End If If SUONICARICATI=VERO Sam Play VOCE,17 : Proc VOCESEGUENTE Else Bell 10 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=6 : Rem D(uck) _PAPEROINCAMPO= Not _PAPEROINCAMPO If _PAPEROINCAMPO=VERO If SUONICARICATI=VERO Sam Play VOCE,16 : Proc VOCESEGUENTE Else Bell 30 End If Else Proc CANCELLAILPAPERO If SUONICARICATI=VERO Sam Play VOCE,17 : Proc VOCESEGUENTE Else Bell 10 End If End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=7 : Rem G(lue) C0LLA= Not C0LLA If C0LLA=VERO If SUONICARICATI=VERO Sam Play VOCE,16 : Proc VOCESEGUENTE Else Bell 30 End If Else If SUONICARICATI=VERO Sam Play VOCE,17 : Proc VOCESEGUENTE Else Bell 10 End If End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=8 : Rem L(aser)+ If LASER=-1 LASER=1 Else If LASER=1 LASER=2 Else If LASER=2 LASER=3 End If If SUONICARICATI=VERO Sam Play VOCE,16 : Proc VOCESEGUENTE Else Bell 30 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=9 : Rem L(aser)- If LASER>0 Dec LASER End If If SUONICARICATI=VERO Sam Play VOCE,17 : Proc VOCESEGUENTE Else Bell 10 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=10 : Rem N(ext level) MATTONCINIRIMASTI=MATTONCINI : MATTONCINI=0 If SUONICARICATI=VERO Sam Play VOCE,16 : Proc VOCESEGUENTE Else Bell 30 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=11 : Rem P(oints)+ If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO If PUNTEGGIO<9999800 Add PUNTEGGIO,180 End If Else If PUNTEGGIO<9999900 Add PUNTEGGIO,90 End If End If Proc MOSTRAILPUNTEGGIO[VERO] If SUONICARICATI=VERO Sam Play VOCE,16 : Proc VOCESEGUENTE Else Bell 30 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=12 : Rem P(oints)- If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO Add PUNTEGGIO,-220 Else Add PUNTEGGIO,-110 End If If PUNTEGGIO<0 PUNTEGGIO=0 End If Proc MOSTRAILPUNTEGGIO[VERO] If SUONICARICATI=VERO Sam Play VOCE,17 : Proc VOCESEGUENTE Else Bell 10 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=13 : Rem R(ow)+ If RIGA<3 T0GLILARIGA=RIGA : Inc RIGA End If If SUONICARICATI=VERO Sam Play VOCE,16 : Proc VOCESEGUENTE Else Bell 30 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=14 : Rem R(ow)- If RIGA>0 T0GLILARIGA=RIGA : RIGA=0 End If If SUONICARICATI=VERO Sam Play VOCE,16 : Proc VOCESEGUENTE Else Bell 30 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=15 : Rem S(peed)+ For PALLINA=0 To MASSIMOPALLINEINCAMPO-1 If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)<8 VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)+0.5 If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA) DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA)) DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA)) Else DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA)) DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA)) End If End If Next PALLINA If SUONICARICATI=VERO Sam Play VOCE,17 : Proc VOCESEGUENTE Else Bell 30 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=16 : Rem S(peed)- For PALLINA=0 To MASSIMOPALLINEINCAMPO-1 If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)>0.5 VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)-0.5 If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA) DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA)) DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA)) Else DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA)) DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA)) End If End If Next PALLINA If SUONICARICATI=VERO Sam Play VOCE,16 : Proc VOCESEGUENTE Else Bell 30 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=17 : Rem X(treme) RIMBALZODELLEPALLINESUIMATTONCINI= Not RIMBALZODELLEPALLINESUIMATTONCINI If RIMBALZODELLEPALLINESUIMATTONCINI=FALSO If SUONICARICATI=VERO Sam Play VOCE,16 : Proc VOCESEGUENTE Else Bell 30 End If Else If SUONICARICATI=VERO Sam Play VOCE,17 : Proc VOCESEGUENTE Else Bell 10 End If End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=18 : Rem y+ If YBARRA<247 Add YBARRA,5 End If If SUONICARICATI=VERO Sam Play VOCE,16 : Proc VOCESEGUENTE Else Bell 30 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=19 : Rem y- If YBARRA>197 Add YBARRA,-5 End If If SUONICARICATI=VERO Sam Play VOCE,17 : Proc VOCESEGUENTE Else Bell 10 End If TIPODIMATTONCINODIPOTENZIAMENTO=0 Else If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO : Rem ? TIPODIMATTONCINODIPOTENZIAMENTO=Rnd(18)+1 End If Until TIPODIMATTONCINODIPOTENZIAMENTO=0 End If End Proc Procedure MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO] ' Check if the specified bonus brick has gone out of the game field If YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>255 Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO] End If End Proc Procedure METTIILPANNELLO ' Put the panel in the game field XPANNELLO=Screen Width-LARGHEZZAPANNELLO Paste Bob XPANNELLO,0,51 : Paste Bob XPANNELLO,128,52 End Proc Procedure METTIECONTAIMATTONCINI ' Put the bricks in the game field and count them MATTONCINI=0 For MATTONCINO=0 To 246 If MATTONCINO(MATTONCINO)>0 Paste Bob X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO),82+MATTONCINO(MATTONCINO) Inc MATTONCINI Else Ink 0 : Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9 End If Next MATTONCINO End Proc Procedure METTIILGIOCOINPAUSA Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,-1] MESSAGGIO$="The game is paused."+Chr$(10) MESSAGGIO$=MESSAGGIO$+"Press a (mouse) key to continue..." Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,0] Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1] End Proc Procedure MOLLAILGUANO ' Drop the guano If GUANOINCAMPO=VERO If GUANOMOLLATO=FALSO XGUANO=XPAPEROALIENO : YGUANO=YPAPEROALIENO+35 : GUANOMOLLATO=VERO Else Bob OGGETTOGUANO,XGUANO,YGUANO,IMMAGINEGUANO Proc LABARRAESTATACOLPITADALGUANO Proc ILGUANOEUSCITODALCAMPODIGIOCO Add YGUANO,3 End If End If End Proc Procedure MOSTRAICREDITI ' Show the credits CREDITI$="EsseErre Sofware Solutions"+Chr$(10) CREDITI$=CREDITI$+"presents..."+Chr$(10) CREDITI$=CREDITI$+"************"+Chr$(10) CREDITI$=CREDITI$+"* MATTONITE *"+Chr$(10) CREDITI$=CREDITI$+"************"+Chr$(10) CREDITI$=CREDITI$+"by Stefano Maria Regattin"+Chr$(10) CREDITI$=CREDITI$+"piazza Pietro Gasparri, 4/U"+Chr$(10) CREDITI$=CREDITI$+"20161 Milano (Milan) Italia (Italy)"+Chr$(10) CREDITI$=CREDITI$+"http://utenti.tripod.it/esseerre/Stefano.html"+Chr$(10) CREDITI$=CREDITI$+"e-mail: esseerre@lycos.it"+Chr$(10) CREDITI$=CREDITI$+"This game, its editor and the related source"+Chr$(10) CREDITI$=CREDITI$+"codes are freely shared out."+Chr$(10) CREDITI$=CREDITI$+"They have been created by AMOS Professional 2.0"+Chr$(10) CREDITI$=CREDITI$+"and compiled by AMOS Professional Compiler 2.0."+Chr$(10) CREDITI$=CREDITI$+"The source codes don't require any additional"+Chr$(10) CREDITI$=CREDITI$+"extension."+Chr$(10) CREDITI$=CREDITI$+"If you will create a new game starting from these"+Chr$(10) CREDITI$=CREDITI$+"source codes, let me know and don't forget to"+Chr$(10) CREDITI$=CREDITI$+"email me and mention me in your resulting creation."+Chr$(10) CREDITI$=CREDITI$+"One day I have asked to my major sister Antonella"+Chr$(10) CREDITI$=CREDITI$+"if she would liked I created a game for her,"+Chr$(10) CREDITI$=CREDITI$+"assuring her I was able to create almost any"+Chr$(10) CREDITI$=CREDITI$+"kind of game she wanted."+Chr$(10) CREDITI$=CREDITI$+"The answer was yes and she specified a game"+Chr$(10) CREDITI$=CREDITI$+"with a bar, a bouncing ball over the bar and"+Chr$(10) CREDITI$=CREDITI$+"dozens of bricks deletable by the ball hit,"+Chr$(10) CREDITI$=CREDITI$+"gaining points for the hits."+Chr$(10) CREDITI$=CREDITI$+"So I started the developing of this game and"+Chr$(10) CREDITI$=CREDITI$+"she called it Mattonite, that in italian means"+Chr$(10) CREDITI$=CREDITI$+"brickache."+Chr$(10) CREDITI$=CREDITI$+"The purpose of the game is simple: destroy all"+Chr$(10) CREDITI$=CREDITI$+"the bricks by the balls hits to overcome all"+Chr$(10) CREDITI$=CREDITI$+"the levels and collect bonus bricks to improve"+Chr$(10) CREDITI$=CREDITI$+"playability."+Chr$(10) CREDITI$=CREDITI$+"The duck eats all the bricks, but avoid the alien"+Chr$(10) CREDITI$=CREDITI$+"duck's guano!"+Chr$(10) CREDITI$=CREDITI$+"Avoid the reflected laser ray also!"+Chr$(10) CREDITI$=CREDITI$+"The three flashing cyan digits report the balls"+Chr$(10) CREDITI$=CREDITI$+"left."+Chr$(10) CREDITI$=CREDITI$+"The three flasing orange digits report the"+Chr$(10) CREDITI$=CREDITI$+"current level."+Chr$(10) CREDITI$=CREDITI$+"The three flashing rainbow colours digits report"+Chr$(10) CREDITI$=CREDITI$+"the score position relative to the top hundred"+Chr$(10) CREDITI$=CREDITI$+"scores."+Chr$(10) CREDITI$=CREDITI$+"The seven flashing cyan digits column report"+Chr$(10) CREDITI$=CREDITI$+"the score."+Chr$(10) CREDITI$=CREDITI$+"The seven flashing orange digits column report"+Chr$(10) CREDITI$=CREDITI$+"the first position score."+Chr$(10) CREDITI$=CREDITI$+"The seven flashing rainbow colors digits report"+Chr$(10) CREDITI$=CREDITI$+"the current level bonus."+Chr$(10) CREDITI$=CREDITI$+"Press the space bar to shock the balls."+Chr$(10) CREDITI$=CREDITI$+"Press the shift keys to fire the laser ray over"+Chr$(10) CREDITI$=CREDITI$+"the bricks to hit the boings or, better, to hit"+Chr$(10) CREDITI$=CREDITI$+"the ballthief!"+Chr$(10) CREDITI$=CREDITI$+"Press the P key to pause the game."+Chr$(10) CREDITI$=CREDITI$+"Press a (mouse) key to scroll quickly the text"+Chr$(10) CREDITI$=CREDITI$+"or press the Esc key to leave the text."+Chr$(10) CREDITI$=CREDITI$+"This is the end...Enjoy!" Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CREDITI$,22,22,1,250] End Proc Procedure MOSTRAILBONUS[M0DO] ' Show the bonus If M0DO=VERO CIFRA=BONUS/1000000 mod 10 Paste Bob 305,120,73+CIFRA CIFRA=BONUS/100000 mod 10 Paste Bob 305,138,73+CIFRA CIFRA=BONUS/10000 mod 10 Paste Bob 305,156,73+CIFRA CIFRA=BONUS/1000 mod 10 Paste Bob 305,174,73+CIFRA CIFRA=BONUS/100 mod 10 Paste Bob 305,192,73+CIFRA CIFRA=BONUS/10 mod 10 Paste Bob 305,210,73+CIFRA CIFRA=BONUS mod 10 Paste Bob 305,228,73+CIFRA Else CIFRA=BONUS mod 10 Paste Bob 305,228,73+CIFRA If CIFRA=9 CIFRA=BONUS/10 mod 10 Paste Bob 305,210,73+CIFRA If CIFRA=9 CIFRA=BONUS/100 mod 10 Paste Bob 305,192,73+CIFRA If CIFRA=9 CIFRA=BONUS/1000 mod 10 Paste Bob 305,174,73+CIFRA If CIFRA=9 CIFRA=BONUS/10000 mod 10 Paste Bob 305,156,73+CIFRA If CIFRA=9 CIFRA=BONUS/100000 mod 10 Paste Bob 305,138,73+CIFRA If CIFRA=9 CIFRA=BONUS/1000000 mod 10 Paste Bob 305,120,73+CIFRA End If End If End If End If End If End If End If End Proc Procedure MOSTRAILLASER ' Show the laser beam over the bar If LASER>0 Bob OGGETTOLASER,XBARRA,YBARRA,IMMAGINELASER+LASER Else If LASER=0 Proc T0GLIILLASER LASER=-1 End If End Proc Procedure MOSTRAILLIVELLO ' Shov the level CIFRA=LIVELLO/100 mod 10 Paste Bob 273,29,63+CIFRA CIFRA=LIVELLO/10 mod 10 Paste Bob 289,29,63+CIFRA CIFRA=LIVELLO mod 10 Paste Bob 305,29,63+CIFRA End Proc Procedure MOSTRAILPUNTEGGIO[M0DO] ' Show the score If M0DO=VERO CIFRA=PUNTEGGIO/1000000 mod 10 Paste Bob 273,120,53+CIFRA CIFRA=PUNTEGGIO/100000 mod 10 Paste Bob 273,138,53+CIFRA CIFRA=PUNTEGGIO/10000 mod 10 Paste Bob 273,156,53+CIFRA CIFRA=PUNTEGGIO/1000 mod 10 Paste Bob 273,174,53+CIFRA CIFRA=PUNTEGGIO/100 mod 10 Paste Bob 273,192,53+CIFRA CIFRA=PUNTEGGIO/10 mod 10 Paste Bob 273,210,53+CIFRA CIFRA=PUNTEGGIO mod 10 Paste Bob 273,228,53+CIFRA Else CIFRA=PUNTEGGIO mod 10 Paste Bob 273,228,53+CIFRA If CIFRA=0 CIFRA=PUNTEGGIO/10 mod 10 Paste Bob 273,210,53+CIFRA If CIFRA=0 CIFRA=PUNTEGGIO/100 mod 10 Paste Bob 273,192,53+CIFRA If CIFRA=0 CIFRA=PUNTEGGIO/1000 mod 10 Paste Bob 273,174,53+CIFRA If CIFRA=0 CIFRA=PUNTEGGIO/10000 mod 10 Paste Bob 273,156,53+CIFRA If CIFRA=0 CIFRA=PUNTEGGIO/100000 mod 10 Paste Bob 273,138,53+CIFRA If CIFRA=0 CIFRA=PUNTEGGIO/1000000 mod 10 Paste Bob 273,120,53+CIFRA End If End If End If End If End If End If End If If PUNTEGGIO>PUNTEGGIOMASSIMO PUNTEGGIOMASSIMO=PUNTEGGIO End If Proc MOSTRAILPUNTEGGIOMASSIMO[M0DO] Proc MOSTRALAPOSIZIONE End Proc Procedure MOSTRAILPUNTEGGIOMASSIMO[M0DO] ' Show the best score If M0DO=VERO CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10 Paste Bob 289,120,63+CIFRA CIFRA=PUNTEGGIOMASSIMO/100000 mod 10 Paste Bob 289,138,63+CIFRA CIFRA=PUNTEGGIOMASSIMO/10000 mod 10 Paste Bob 289,156,63+CIFRA CIFRA=PUNTEGGIOMASSIMO/1000 mod 10 Paste Bob 289,174,63+CIFRA CIFRA=PUNTEGGIOMASSIMO/100 mod 10 Paste Bob 289,192,63+CIFRA CIFRA=PUNTEGGIOMASSIMO/10 mod 10 Paste Bob 289,210,63+CIFRA CIFRA=PUNTEGGIOMASSIMO mod 10 Paste Bob 289,228,63+CIFRA Else CIFRA=PUNTEGGIOMASSIMO mod 10 Paste Bob 289,228,63+CIFRA If CIFRA=0 CIFRA=PUNTEGGIOMASSIMO/10 mod 10 Paste Bob 289,210,63+CIFRA If CIFRA=0 CIFRA=PUNTEGGIOMASSIMO/100 mod 10 Paste Bob 289,192,63+CIFRA If CIFRA=0 CIFRA=PUNTEGGIOMASSIMO/1000 mod 10 Paste Bob 289,174,63+CIFRA If CIFRA=0 CIFRA=PUNTEGGIOMASSIMO/10000 mod 10 Paste Bob 289,156,63+CIFRA If CIFRA=0 CIFRA=PUNTEGGIOMASSIMO/100000 mod 10 Paste Bob 289,138,63+CIFRA If CIFRA=0 CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10 Paste Bob 289,120,63+CIFRA End If End If End If End If End If End If End If End Proc Procedure MOSTRAILRAGGIOLASER ' Show the laser ray If RAGGIOLASERSPARATO=VERO Bob OGGETTORAGGIOLASER,XLASER,YLASER,IMMAGINERAGGIOLASER If RAGGIOLASERRIFLESSO=VERO If YLASER<255 Add YLASER,5 Else RAGGIOLASERRIFLESSO=FALSO Proc CANCELLAILRAGGIOLASER End If Else If YLASER>0 Add YLASER,-5 Else Proc CANCELLAILRAGGIOLASER End If End If Bob Update End If End Proc Procedure MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI ' Show the top hundred player scores If Exist(PUNTEGGI$) and CENTOGIOCATORI$<>"" Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CENTOGIOCATORI$,20,22,1,250] Else NONCISONOGIOCATORI$="No players till now..."+Chr$(10) NONCISONOGIOCATORI$=NONCISONOGIOCATORI$+"Press a (mouse) key to continue" Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[NONCISONOGIOCATORI$,21,20,1,250] End If End Proc Procedure MOSTRALABARRA ' Show the bar If LUNGHEZZADELLABARRA=0 Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,5 Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,6 Else If LUNGHEZZADELLABARRA=1 Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,1 Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,2 Else If LUNGHEZZADELLABARRA=2 Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,3 Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,4 End If End Proc Procedure MOSTRALAPOSIZIONE ' Show the current player position For POSIZIONE=1 To 100 If PUNTEGGIO>Val(PUNTEGGIODELGIOCATORE$(POSIZIONE-1)) Exit Else If PUNTEGGIODELGIOCATORE$(POSIZIONE-1)="" Exit End If Next POSIZIONE CIFRA=POSIZIONE/100 mod 10 Paste Bob 273,47,73+CIFRA CIFRA=POSIZIONE/10 mod 10 Paste Bob 289,47,73+CIFRA CIFRA=POSIZIONE mod 10 Paste Bob 305,47,73+CIFRA End Proc Procedure MOSTRALARIGA[TIPODIRIGA] ' Show the row If TIPODIRIGA=1 IMMAGINERIGA=IMMAGINERIGAUNO Else If TIPODIRIGA=2 IMMAGINERIGA=IMMAGINERIGADUE Else If TIPODIRIGA=3 IMMAGINERIGA=IMMAGINERIGATRE End If If XRIGA>0 Bob OGGETTORIGA,XRIGA,251,IMMAGINERIGA Else If T0GLILARIGA>0 Proc T0GLILARIGA T0GLILARIGA=0 DURATADELLARIGA=-1 End If End If Bob Update End Proc Procedure MOSTRALEPALLINERIMASTE ' Show the remained balls PALLINERIMASTE=PALLINE-1 If PALLINERIMASTE>-1 CIFRA=PALLINERIMASTE/100 mod 10 Paste Bob 273,11,53+CIFRA CIFRA=PALLINERIMASTE/10 mod 10 Paste Bob 289,11,53+CIFRA CIFRA=PALLINERIMASTE mod 10 Paste Bob 305,11,53+CIFRA End If End Proc Procedure _PAPEROALIENOINCAMPO ' Manage the alien duck If _PAPEROALIENO=0 XPAPEROALIENO=Rnd(XFINALERIGA) : YPAPEROALIENO=-20 GRADIPAPEROALIENO=45 : _PAPEROALIENO=1 Else If RITARDOPAPERO=0 Add IMMAGINEPAPEROALIENO,1,0 To IMMAGINIPAPERO-1 Inc YPAPEROALIENO End If If _PAPEROINCAMPO=FALSO Add RITARDOPAPERO,1,0 To 12 End If Add GRADIPAPEROALIENO,_PAPEROALIENO If GRADIPAPEROALIENO=90 GUANOINCAMPO=VERO Else If _PAPEROALIENO=1 and GRADIPAPEROALIENO=135 _PAPEROALIENO=-1 Else If _PAPEROALIENO=-1 and GRADIPAPEROALIENO=45 _PAPEROALIENO=1 End If XMOVIMENTOPAPEROALIENO=Cos(GRADIPAPEROALIENO)*80 YMOVIMENTOPAPEROALIENO=Sin(GRADIPAPEROALIENO)*80-50 Bob OGGETTOPAPEROALIENO,XPAPEROALIENO+XMOVIMENTOPAPEROALIENO,YPAPEROALIENO+YMOVIMENTOPAPEROALIENO,IMMAGINEPAPEROALIENO(IMMAGINEPAPEROALIENO) Proc ILPAPEROALIENOESTATOCOLPITO Proc ILPAPEROALIENOEUSCITODALCAMPODIGIOCO End If End Proc Procedure _PAPEROINCAMPO ' Manage the duck Bob OGGETTOPAPERO,XPAPERO,YPAPERO,IMMAGINEPAPERO(IMMAGINEPAPERO) If RITARDOPAPERO=0 Add IMMAGINEPAPERO,1,0 To IMMAGINIPAPERO-1 End If Add RITARDOPAPERO,1,0 To 12 If MATTONCINODATROVAREPERILPAPERO<247 If MATTONCINO(MATTONCINODATROVAREPERILPAPERO)>0 XMATTONCINOPERILPAPERO=X0ZONA(MATTONCINODATROVAREPERILPAPERO)-XPAPERO YMATTONCINOPERILPAPERO=Y0ZONA(MATTONCINODATROVAREPERILPAPERO)-YPAPERO If Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)<DISTANZADELMATTONCINOPIUVICINOALPAPERO DISTANZADELMATTONCINOPIUVICINOALPAPERO=Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO) MATTONCINOPERILPAPERO=MATTONCINODATROVAREPERILPAPERO End If End If Add MATTONCINODATROVAREPERILPAPERO,1,0 To 247 Else DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000 XDISTANZADELPAPERODALMATTONCINOPIUVICINO=X0ZONA(MATTONCINOPERILPAPERO)+10-XPAPERO If XDISTANZADELPAPERODALMATTONCINOPIUVICINO>0 Inc XPAPERO Else If XDISTANZADELPAPERODALMATTONCINOPIUVICINO<0 Dec XPAPERO End If YDISTANZADELPAPERODALMATTONCINOPIUVICINO=Y0ZONA(MATTONCINOPERILPAPERO)+5-YPAPERO If YDISTANZADELPAPERODALMATTONCINOPIUVICINO>0 Inc YPAPERO Else If YDISTANZADELPAPERODALMATTONCINOPIUVICINO<0 Dec YPAPERO End If If XDISTANZADELPAPERODALMATTONCINOPIUVICINO=0 and YDISTANZADELPAPERODALMATTONCINOPIUVICINO=0 If MATTONCINO(MATTONCINOPERILPAPERO)>0 X0MATTONCINO=X0ZONA(MATTONCINOPERILPAPERO) Y0MATTONCINO=Y0ZONA(MATTONCINOPERILPAPERO) X1MATTONCINO=X0MATTONCINO+19 Y1MATTONCINO=Y0MATTONCINO+9 Proc CANCELLAILPAPERO Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO] Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINOPERILPAPERO,Rnd(9)] MATTONCINO(MATTONCINOPERILPAPERO)=0 Else MATTONCINODATROVAREPERILPAPERO=0 End If End If End If End Proc Procedure RIDISEGNODELMATTONCINO[MATTONCINO,DURATADELRIDISEGNODELMATTONCINO] ' Redraw the hitted bricks For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1 If MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO Else If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=0 MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO Pop Proc End If Next MATTONCINODARIDISEGNARE End Proc Procedure RIMETTILOSFONDO ' Redraw the screen Put Block 1 End Proc Procedure RUBAPALLINAINCAMPO If PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO PALLINA=Rnd(MASSIMOPALLINEINCAMPO-1) If PALLINA(PALLINA)=VERO PALLINASCELTADALRUBAPALLINA=PALLINA YRUBAPALLINA=0 If SUONICARICATI=VERO Sam Play 13 : Proc VOCESEGUENTE Else Bell 4 End If End If Else Bob OGGETTORUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINERUBAPALLINA(IMMAGINERUBAPALLINA) If PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO If PALLINA(PALLINASCELTADALRUBAPALLINA)=VERO XPALLINA=Int(XPALLINA#(PALLINASCELTADALRUBAPALLINA)) YPALLINA=Int(YPALLINA#(PALLINASCELTADALRUBAPALLINA)) XRUBAPALLINA=XPALLINA If YRUBAPALLINA>YPALLINA Dec YRUBAPALLINA Else If YRUBAPALLINA<YPALLINA Inc YRUBAPALLINA Else PALLINAPRESADALRUBAPALLINA=PALLINASCELTADALRUBAPALLINA PALLINA(PALLINAPRESADALRUBAPALLINA)=FALSO End If Else PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO End If Else Bob OGGETTOPALLINA+PALLINAPRESADALRUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINEPALLINA Add XRUBAPALLINA,Rnd(6)-3 Proc LIMITI[XRUBAPALLINA,11,XFINALERIGA-11] : XRUBAPALLINA=Param Dec YRUBAPALLINA If RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA=0 If SUONICARICATI=VERO Sam Play 14 : Proc VOCESEGUENTE Else Bell 4 End If End If Add RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA,1,0 To 49 Proc ILRUBAPALLINAEUSCITODALCAMPODIGIOCO End If Proc ILRUBAPALLINAESTATOCOLPITO End If End Proc Procedure SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI ' Save the top hundred scores If Exist(PUNTEGGI$) Then Kill PUNTEGGI$ Open Out 1,PUNTEGGI$ For POSIZIONI=0 To 99 If Val(PUNTEGGIODELGIOCATORE$(POSIZIONI))>0 Print #1,NOMEDELGIOCATORE$(POSIZIONI) Print #1,PUNTEGGIODELGIOCATORE$(POSIZIONI) Print #1,LIVELLOINCUIILGIOCATOREHAFINITOILGIOCO$(POSIZIONI) End If Next POSIZIONI Close 1 End Proc Procedure TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTO$,C0LORETESTOPRIMALINEA,C0LORETESTOSECONDALINEA,C0LOREBORDO,TEMP0] ' Manage the texts If TESTO$="" Then Get Block 1,0,0,Screen Width,Screen Height ALTEZZALINEA=ALTEZZAFONT+3 LINEE=1 POSIZIONEPAROLA=1 Repeat ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA) If ACAPO>0 Then Inc LINEE : POSIZIONEPAROLA=ACAPO+1 Until ACAPO=0 If LINEE=1 C0LORETESTO=C0LORETESTOPRIMALINEA XINIZIOTESTO=(Screen Width-Text Length(TESTO$))/2 YINIZIOTESTO=(Screen Height-(ALTEZZALINEA))/2+Text Base Proc RIMETTILOSFONDO Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO,TESTO$,C0LORETESTO,C0LOREBORDO] Proc _ASPETTA[TEMP0] If TASTO=27 Pop Proc End If Else Dim TESTO$(LINEE-1) POSIZIONEPAROLA=1 For LINEA=0 To LINEE-1 ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA) If ACAPO>0 TESTO$(LINEA)=Mid$(TESTO$,POSIZIONEPAROLA,ACAPO-POSIZIONEPAROLA) POSIZIONEPAROLA=ACAPO+1 Else TESTO$(LINEA)=Right$(TESTO$,Len(TESTO$)-POSIZIONEPAROLA+1) End If Next LINEA ALTEZZATESTO=ALTEZZALINEA*LINEE If ALTEZZATESTO<Screen Height ILTESTOSTATUTTONELLOSCHERMO=VERO Else For LINEA=LINEE To 2 Step -1 ALTEZZATESTO=ALTEZZALINEA*LINEA If ALTEZZATESTO<Screen Height NUMEROMASSIMODILINEENELLOSCHERMO=LINEA Exit End If Next LINEA End If If ILTESTOSTATUTTONELLOSCHERMO=VERO Proc RIMETTILOSFONDO YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base For LINEA=0 To LINEE-1 If LINEA mod 2=0 C0LORETESTO=C0LORETESTOPRIMALINEA Else C0LORETESTO=C0LORETESTOSECONDALINEA End If XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2 Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO] Next LINEA Proc _ASPETTA[TEMP0] If TASTO=27 Pop Proc End If Else Proc RIMETTILOSFONDO YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base For LINEA=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1 If(LINEA) mod 2=0 C0LORETESTO=C0LORETESTOPRIMALINEA Else C0LORETESTO=C0LORETESTOSECONDALINEA End If XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2 Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO] Next LINEA Proc _ASPETTA[TEMP0*NUMEROMASSIMODILINEENELLOSCHERMO] If TASTO=27 Pop Proc End If For LINEA=1 To LINEE-NUMEROMASSIMODILINEENELLOSCHERMO Proc RIMETTILOSFONDO For LINEANELLOSCHERMO=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1 If(LINEA+LINEANELLOSCHERMO) mod 2=0 C0LORETESTO=C0LORETESTOPRIMALINEA Else C0LORETESTO=C0LORETESTOSECONDALINEA End If XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEANELLOSCHERMO+LINEA)))/2 Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEANELLOSCHERMO,TESTO$(LINEANELLOSCHERMO+LINEA),C0LORETESTO,C0LOREBORDO] Next LINEANELLOSCHERMO Proc _ASPETTA[TEMP0] If TASTO=27 Pop Proc End If Next LINEA End If End If End Proc Procedure T0GLILARCOBALENO ' Fade out the rainbow For LINEADELLARCOBALENO=271 To 271-255 Step -1 Rainbow 0,257,0,LINEADELLARCOBALENO Wait Vbl Next LINEADELLARCOBALENO End Proc Procedure T0GLILARIGA ' Turn off the row Bob Off OGGETTORIGA Bob Update End Proc Procedure T0GLIILLASER ' Turn off the laser beam Bob Off OGGETTOLASER Bob Update End Proc Procedure T0GLIILPANNELLO ' Fade out the panel Ink 0 For LINEAPANNELLO=255 To 0 Step -1 Draw XPANNELLO,LINEAPANNELLO To XPANNELLO+LARGHEZZAPANNELLO-1,LINEAPANNELLO Wait Vbl Next LINEAPANNELLO End Proc Procedure T0GLIIMATTONCINI ' Fade out the bricks Ink 0 For MATTONCINO=246 To 0 Step -1 If MATTONCINO(MATTONCINO)>0 Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9 Wait Vbl End If Next MATTONCINO End Proc Procedure TROVAILFONTDATA70 ' Look for the Data70 font TESTOFONTEDICARATTERE$="I am looking for the Data70 font..."+Chr$(10) TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"...in your FONTS: drawer."+Chr$(10) TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Wait for a moment, please..." Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,-1] Get Disc Fonts For FONTEDICARATTERE=1 To 65535 FONTEDICARATTERE$=Left$(Font$(FONTEDICARATTERE),30)-" " If FONTEDICARATTERE$="Data70.font" Then Exit Next FONTEDICARATTERE If FONTEDICARATTERE<65536 Set Font FONTEDICARATTERE ALTEZZAFONT=Val(Mid$(Font$(FONTEDICARATTERE),31,2)-" ") TESTOFONTEDICARATTERE$="The font I am using is the Data70 font! :)"+Chr$(10) TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10) TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..." Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,250] Else TESTOFONTEDICARATTERE$="The font I am using is the Topaz font! :("+Chr$(10) TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10) TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..." Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,18,18,19,250] End If Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,-1] End Proc Procedure VOCESEGUENTE ' Select the next audio voice for the next sound Add VOCE,VOCE : If VOCE=16 Then VOCE=1 End Proc